Transcoding is the direct digital-to-digital conversion of one digitally encoded format to another format. Transcoding can be found in many areas of content adaptation and is often used to convert incompatible or obsolete data into a more suitable format. It is also used to archive or distribute content on different types of digital media for use in different playback devices, such as converting songs from CD format to MP3 format for playback on computers and MP3 players. Transcoding is also commonly used in the area of mobile phone content adaptation. In this case, transcoding is necessary due to the diversity of mobile devices and their capabilities. This diversity requires an intermediate state of content adaptation in order to make sure that the source content will adequately play back on the target device.
One popular area in which transcoding is used is the Multimedia Messaging Service (MMS), which is the technology used to send or receive messages with media (image, sound, text and video) between mobile phones. For example, when a camera phone is used to take a digital picture, a high-quality image usually of at least 640×480 resolution is created. Sending the image to another phone may require that this high resolution image be transcoded to a lower resolution image with less color in order to better fit the target device's screen size and display limitations. Transcoding is also used by home theatre software, such as to reduce the usage of disk space by video files. The most common operation in this application is the transcoding of MPEG-2 files to the MPEG-4 format. With the huge number of online multimedia content and number of different devices available, real-time transcoding from any input format to any output format is becoming a necessary to provide true search capability for any multimedia content on any mobile device.
Present transcoding schemes typically utilize only the CPU resources of the processing system. Because of the size of video data, this can present a substantial processing overhead for the system, while additional available resources, such as GPU bandwidth often is underutilized in such operations.
What is desired, therefore, is a transcoding process that utilizes both GPU and CPU resources for the tasks performed in the transcode pipeline.